﻿//---------------------------------------------------------------------------

#include "vcl_stl.h"
#pragma hdrstop

#include "h_i18n.h"

//---------------------------------------------------------------------------

namespace h_g
{

static map<UTF8String, UTF8String> StringMap;
static const wchar_t *StringArr[][4] =
{
   L"t_transferprogressform:IP_ADDRESS_PORT",
      L"IP Address : %s, Port : %d",
      L"IP 地址 : %s, 端口 : %d",
      L"IP 地址 : %s, 端口 : %d",

   L"h_designcontrol:CAN_NOT_LINK",
      L"Can not link %s -> %s",
      L"不能连接 %s -> %s",
      L"不能連接 %s -> %s",
   L"h_designcontrol:ADD",
      L"ADD %s",
      L"增加 %s",
      L"增加 %s",
   L"h_designcontrol:DELETE",
      L"DELETE %s",
      L"删除 %s",
      L"刪除 %s",
   L"h_designcontrol:LINK",
      L"LINK %s->%s",
      L"连接 %s->%s",
      L"連接 %s->%s",
   L"h_designcontrol:UNLINK",
      L"UNLINK %s->%s",
      L"删除连接 %s->%s",
      L"刪除連接 %s->%s",
   L"h_designcontrol:MOVE",
      L"MOVE %s",
      L"移动 %s",
      L"移動 %s",
   L"h_designcontrol:PASTE",
      L"PASTE",
      L"粘贴",
      L"粘貼",
   L"h_designcontrol:NEW_GROUP",
      L"NEW GROUP",
      L"新建组",
      L"新建組",
   L"h_designcontrol:DELETE_GROUP",
      L"DELETE GROUP",
      L"删除组",
      L"刪除組",
   L"h_designcontrol:MOVE_GROUP",
      L"MOVE GROUP",
      L"移动组",
      L"移動組",
   L"h_designcontrol:LOAD_GROUP",
      L"LOAD GROUP",
      L"载入组",
      L"載入組",
   L"h_designcontrol:EDIT",
      L"EDIT %s",
      L"编辑 %s",
      L"編輯 %s",
   L"h_designcontrol:EDIT_BATCH_PROPERTY",
      L"EDIT BATCH PROPERTY",
      L"编辑批量属性",
      L"編輯批量屬性",

   L"h_globalinfo:LOAD_COLORS_FAIL",
      L"Load colors.xml fail, %s",
      L"载入 colors.xml 失败, %s",
      L"載入 colors.xml 失敗, %s",
   L"h_globalinfo:INVALID_VERSION",
      L"INVALID VERSION",
      L"非法版本",
      L"非法版本",

   L"h_stage:BATCH_HINT",
      L"Type        : BATCH\nName        : %s\nHost        : %s\nBatch       : %s\nTag        : %s",
      L"类型        : 批量\n名称        : %s\n主机名     : %s\n批量        : %s\n标签        : %s",
      L"類型        : 批量\n名稱        : %s\n主機名     : %s\n批量        : %s\n標籤        : %s",
   L"h_stage:JOB_HINT",
      L"Type        : JOB\nName        : %s\nCommand     : %s\nTag        : %s",
      L"类型        : 作业\n名称        : %s\n命令        : %s\n标签        : %s",
      L"類型        : 作業\n名稱        : %s\n命令        : %s\n標籤        : %s",
   L"h_stage:DESCRIPTION",
      L"\nDescription : ",
      L"\n描述        : ",
      L"\n描述        : ",
   L"h_stage:DUPLICATED_NAME",
      L"Duplicated name(",
      L"重复的名称(",
      L"重複的名稱(",
   L"h_stage:INVALID_NAME",
      L"Invalid name(",
      L"非法的名称(",
      L"非法的名稱(",
   L"h_stage:INVALID_TIME",
      L"Invalid time(",
      L"非法的时间(",
      L"非法的時間(",
   L"h_stage:CONNECTOR_HINT",
      L"Type        : CONNECTOR\nHide arrow  : %s",
      L"类型        : 连接器\n隐藏箭头    : %s",
      L"類型        : 連接器\n隱藏箭頭    : %s",
   L"h_stage:EXTERN_JOB_HINT",
      L"Type        : EXTERN JOB\nGroup       : %s\nJob         : %s",
      L"类型        : 外部作业\n组          : %s\n作业        : %s",
      L"類型        : 外部作業\n組          : %s\n作業        : %s",
   L"h_stage:EVENT_FIRE_HINT",
      L"Type        : EVENT FIRE\nHost name   : %s\nEvent       : %s",
      L"类型        : 触发事件\n主机名      : %s\n事件        : %s",
      L"類型        : 觸發事件\n主機名      : %s\n事件        : %s",
   L"h_stage:HOST_NAME_MUST_NOT_BE_EMPTY",
      L"Host name must not be empty",
      L"主机名不能为空",
      L"主機名不能為空",
   L"h_stage:EVENT_MUST_NOT_BE_EMPTY",
      L"Event must not be empty",
      L"事件不能为空",
      L"事件不能為空",
   L"h_stage:EVENT_WAIT_HINT",
      L"Type        : EVENT WAIT",
      L"类型        : 等待事件",
      L"類型        : 等待事件",
   L"h_stage:EVENT",
      L"\nEvent       : ",
      L"\n事件        : ",
      L"\n事件        : ",
   L"h_stage:WAIT_FILE",
      L"\nWait file   : ",
      L"\n等待文件    : ",
      L"\n等待文件    : ",
   L"h_stage:WAIT_TIME",
      L"\nWait time   : ",
      L"\n等待时间    : ",
      L"\n等待時間    : ",
   L"h_stage:WAIT_COMMAND",
      L"\nWait command: ",
      L"\n等待命令    : ",
      L"\n等待命令    : ",
   L"h_stage:WAIT_FOR_WHAT",
      L"Wait for what?",
      L"等待什么？",
      L"等待什麼？",
   L"h_stage:INCORRECT_TIME_FORMAT",
      L"Incorrect time format(HH:MM)",
      L"时间格式错误(HH:MM)",
      L"時間格式錯誤(HH:MM)",
   L"h_stage:GROUP_HINT",
      L"Type        : GROUP\nGroup      : %s",
      L"类型        : 作业组\n组         : %s",
      L"類型        : 作業組\n組         : %s",
   L"h_stage:GROUP_MUST_NOT_BE_EMPTY",
      L"Group must not be empty",
      L"组不能为空",
      L"組不能為空",
   L"h_stage:EXTERN_GROUP_HINT",
      L"Type        : EXTERN GROUP\nExtern Jobs : %d",
      L"类型        : 外部作业\n外部作业数  : %d",
      L"類型        : 外部作業\n外部作業數  : %d",
   L"h_stage:CAPTION_MUST_NOT_BE_EMPTY",
      L"Caption must not be empty",
      L"标题不能为空",
      L"標題不能為空",
   L"h_stage:BATCH_MUST_NOT_BE_EMPTY",
      L"Batch must not be empty",
      L"批量不能为空",
      L"批量不能為空",

   L"h_transferthread:CREATE_SOCKET_ERROR",
      L"create socket error, r = %d",
      L"创建 socket 错误, r = %d",
      L"創建 socket 錯誤, r = %d",
   L"h_transferthread:CONNECT_ERROR",
      L"connect error, r = %d, ErrCode = %d",
      L"连接错误, r = %d, ErrCode = %d",
      L"連接錯誤, r = %d, ErrCode = %d",
   L"h_transferthread:WRITE_ERROR",
      L"write error, r = %d, ErrCode = %d",
      L"写入错误, r = %d, ErrCode = %d",
      L"寫入錯誤, r = %d, ErrCode = %d",
   L"h_transferthread:READ_ERROR",
      L"read error, r = %d, ErrCode = %d",
      L"读取错误, r = %d, ErrCode = %d",
      L"讀取錯誤, r = %d, ErrCode = %d",
   L"h_transferthread:PASSWORD_NOT_CORRECT",
      L"password not correct",
      L"密码错误",
      L"密碼錯誤",
   L"h_transferthread:ACCESS_DENIED",
      L"access denied",
      L"访问被拒",
      L"訪問被拒",
   L"h_transferthread:SERVER_FAIL",
      L"server fail",
      L"服务端失败",
      L"服務器失敗",

   L"t_mainform:SAVE_CHANGE_TO",
      L"Save change to ",
      L"保存修改到 ",
      L"保存修改到 ",
   L"t_mainform:DUPLICATED_GROUP",
      L"Duplicated group : %s\n",
      L"重复的组 : %s\n",
      L"重複的組 : %s\n",
   L"t_mainform:INVALID_EXTERN",
      L"Invalid extern : %s, %s",
      L"非法的外部名 : %s, %s",
      L"非法的外部名 : %s, %s",
   L"t_mainform:INVALID_GROUP_AGENT",
      L"Invalid group agent : %s, %s",
      L"非法的组代理 : %s, %s",
      L"非法的組代理 : %s, %s",
   L"t_mainform:DUPLICATED_GROUP_AGENT",
      L"Duplicated group agent : %s, %s; %s",
      L"重复的组代理 : %s, %s; %s",
      L"重複的組代理 : %s, %s; %s",
   L"t_mainform:ISOLATED_GROUP",
      L"Isolated group : %s",
      L"孤立组 : %s",
      L"孤立組 : %s",
   L"t_mainform:FOUND_CIRCUIT",
      L"Found circuit(",
      L"发现循环依赖(",
      L"發現循環依賴(",
   L"t_mainform:LOAD_FAIL",
      L"Load %s fail, %s\n",
      L"载入 %s 失败, %s\n",
      L"載入 %s 失敗, %s\n",
   L"t_mainform:AUTHOR_CAN_NOT_BE_EMPTY",
      L"Author can not be empty",
      L"作者不能为空",
      L"作者不能為空",
   L"t_mainform:GROUP_CAN_NOT_BE_EMPTY",
      L"Group can not be empty",
      L"组不能为空",
      L"組不能為空",
   L"t_mainform:DUPLICATED_GROUP_NAME",
      L"Duplicated group name",
      L"组名重复",
      L"組名重複",
   L"t_mainform:FADING_PERIOD_FORMAT_MUST_BE",
      L"Fading period format must be HH:MM",
      L"褪色周期格式必须是 HH:MM",
      L"褪色週期格式必須是 HH:MM",
   L"t_mainform:GROUP_NAME_TOO_LONG",
      L"Group name '%s' too long(>31)",
      L"组名 '%s' 太长(>31)",
      L"組名 '%s' 太長(>31)",
   L"t_mainform:EXCEL_EXPORT_SUCCESS",
      L"Export to Excel successfully",
      L"导出到Excel成功",
      L"導出到Excel成功",

   L"t_passwordform:LOAD_FAIL",
      L"Load %s fail, %s\n",
      L"载入 %s 失败, %s\n",
      L"載入 %s 失敗, %s\n",
   L"t_passwordform:SERVER_NOT_DEFINED",
      L"Server not defined in simbat.cfg",
      L"服务器在 simbat.cfg 中没有定义",
      L"服務器在 simbat.cfg 中沒有定義",

   L"t_listform:NAME",
      L"NAME",
      L"名称",
      L"名稱",
   L"t_listform:COMMAND",
      L"COMMAND",
      L"命令",
      L"命令",

   L"t_normaljobform:RESOURCE",
      L"RESOURCE",
      L"资源",
      L"資源",
   L"t_normaljobform:RW_FLAG",
      L"READ/WRITE",
      L"读/写",
      L"讀/寫",
   L"t_normaljobform:EXTERN_GROUP",
      L"EXTERN GROUP",
      L"外部组",
      L"外部組",
   L"t_normaljobform:EXTERN_JOB",
      L"EXTERN JOB",
      L"外部作业",
      L"外部作業",

   L"h_server:CREATE_SOCKET_ERROR",
      L"%s create socket error, r = %d",
      L"%s 创建 socket 错误, r = %d",
      L"%s 創建 socket 錯誤, r = %d",
   L"h_server:CONNECT_ERROR",
      L"%s connect(%s, %d) error, r = %d, ErrCode = %d",
      L"%s 连接(%s, %d) 错误, r = %d, ErrCode = %d",
      L"%s 連接(%s, %d) 錯誤, r = %d, ErrCode = %d",
   L"h_server:WRITE_ERROR",
      L"%s write error, r = %d, ErrCode = %d",
      L"%s 写入错误, r = %d, ErrCode = %d",
      L"%s 寫入錯誤, r = %d, ErrCode = %d",
   L"h_server:INQUIRY_READ_LENGTH_ERROR",
      L"Inquiry read length error, r = %d, ErrCode = %d",
      L"Inquiry 读取长度错误, r = %d, ErrCode = %d",
      L"Inquiry 讀取長度錯誤, r = %d, ErrCode = %d",
   L"h_server:CAN_NOT_CREATE",
      L"can not create %s",
      L"不能创建 %s",
      L"不能創建 %s",
   L"h_server:TEXT_FILE_DECOMPRESS_FAIL",
      L"%s TextFileDecompress fail",
      L"%s TextFileDecompress 失败",
      L"%s TextFileDecompress 失敗",

   L"h_g:ENTERPRISE_EDITION",
      L" (   Enterprise Edition   )",
      L" (   企业版   )",
      L" (   企業版   )",

   L"h_g:COMMUNITY_EDITION",
      L" (   Community Edition   )",
      L" (   社区版   )",
      L" (   社區版   )",

   L"h_g:ENTERPRISE_ONLY",
      L"This feature is only available in the Enterprise Edition",
      L"本功能只包含在企业版中",
      L"本功能只包含在企業版中",

   NULL
};

void __fastcall I18nInit(int Idx)
{
   StringMap.clear();

   for ( int i = 0; StringArr[i][0] != NULL; i++ )
   {
      StringMap[StringArr[i][0]] = StringArr[i][Idx];
   }
}

const char * __fastcall I18nString(const char *Key)
{
   if ( StringMap.find(Key) == StringMap.end() )
   {
      return Key;
   }

   return StringMap[Key].c_str();
}

};

#pragma package(smart_init)
